package tcpfileupadatedemo3;

import java.io.*;
import java.net.Socket;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-08-09
 * Time: 17:40
 */
//这是对上传文件的再一次优化，因为没有升级之前，服务器只能处理一个客户端的需求，无法处理多个客户端发来的请求
    //所以我们要做优化，使用多线程去操作接收文件然后保存到本地并返回上传成功
public class ClientDemo {
    public static void main(String[] args) throws IOException {
        Socket socket=new Socket("127.0.0.1",1000);
        
        //从本地读取文件
        //BufferedInputStream向另一个输入流添加了功能，即缓冲输入并支持mark和reset方法的能力
        //字节流缓冲输入
        BufferedInputStream bi=new BufferedInputStream(new FileInputStream("src/ClientImg/img.png"));
        
        //传到服务器
        // 写到服务器 --- 网络中的流
        OutputStream os=socket.getOutputStream();
        //字节流缓冲输出
        BufferedOutputStream bo=new BufferedOutputStream(os);
        int b;
        //从本地文件读取流
        while ((b=bi.read())!=-1){
            //写到网络输出流中
            bo.write(b);
        }
        
        bo.flush();
        //给服务器一个结束标记,告诉服务器文件已经传输完毕
        socket.shutdownOutput();
        
        //需要读取到服务器发来的上传成功
        //读取网络中的输入流
        BufferedReader bf=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        //把读取到的字符输出来
        String line;
        while ((line=bf.readLine())!=null){
            System.out.println(line);
        }
        bi.close();
        socket.close();
        
    }
}
